<!--
 * @Descripttion: 
 * @version: 
 * @Author: Ansel
 * @Date: 2020-03-14 19:40:30
 * @LastEditors: Ansel
 * @LastEditTime: 2020-05-15 15:33:22
 -->
 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
        //  readyState
        // 0: 请求未初始化
        // 1: 服务器连接已建立
        // 2: 请求已接收
        // 3: 请求处理中
        // 4: 请求已完成，且响应已就绪

        //async异步
        // function toData(obj){
        //      if(obj === null) return;
        //      let arr = [];
        //      for(let i in obj){
        //          let str = i + "=" + obj[i];
        //          arr.push(str);
        //      }
        //      return arr.join("&");
        //  }
        //  function ajax(obj){
        //      return new Promise((resolve,reject) =>{
        //          obj.type = obj.type || "get";
        //          obj.async = obj.async || true;
        //          obj.data = obj.data || null;
                 
        //          let xhr = null;
        //          if(window.XMLHttpRequest){
        //             xhr = new XMLHttpRequest();
        //          }else{
        //              try {
        //                 xhr = new ActiveXObject("Msxml2.XMLHTTP")
        //                 return xhr

        //              } catch (error) {
        //                 xhr = new ActiveXObject("Microsoft.XMLHTTP");
        //                 return xhr
        //              }
                     
        //          }

        //          if(obj.type === "post"){
        //              xhr.open(obj.type,obj.url,obj.async);
        //              xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        //              xhr.send(obj.data);
        //          }else{
        //              let url = obj.url + "?" + toData(obj.data);
        //              xhr.open(obj.type,url,obj.async);
        //              xhr.send();
        //          }
        //          xhr.onreadystatechange = function(){
        //              if(xhr.readyState === 4){
        //                  if(xhr.status >= 200 & xhr.status < 300 || xhr.status === 304){
        //                      resolve(JSON.parse(xhr.responseText));
        //                  }else{
        //                      reject(xhr.status)
        //                  }
        //              }
        //          }
        //      })
        //  }
        function getXHR () {
            let xhr = new 
        }
     </script>
 </body>
 </html>